Content transmitted from a server to a client can be either dynamic or static. Static content typically does not include an executable element intended for execution by the client. Examples of static content include plain text, images, and standard form elements. Dynamic content typically includes an executable portion intended to be executed by the client, the executable portion usually serving to modify content or take some action in response to a user action. Often, an executable element will be linked with another content element for the purpose of modifying or updating that element in response to a user action. Examples of dynamic content include executable elements that populate or verify form entries, executable elements that alter content elements in response mouse actions, and executable elements that rewrite portions of a page for effective display in a given browser or window size.
For a number of reasons, a server may not wish to transmit dynamic content to a given client. The client may lack the capability to process dynamic content, lack the resources to process dynamic content efficiently, or have a preference against dynamic content. A server may also wish to conceal certain executable code and operations from the client due to concerns of piracy or security breaches. A server may wish to ensure that content is delivered in a uniform fashion across clients who may process a given executable element differently. However, even though a server may not wish to transmit dynamic content to a client, the server may still wish to gain certain benefits of dynamic content, such as form verification, interactivity, or user-specific responses.
Because of the large amount of pre-existing content that resides in dynamic form, it would be impractical for a server administrator to manually rewrite all dynamic content into static form for the above scenarios. Further, developing both static and dynamic methods for transmitting new content may also require considerable developer and administrator time. Thus, there exists a need for automatically providing access to dynamic content via static pages, while preserving the functionality and information contained in the dynamic content.